/**
 */
package org.mro.grib.model.files.secondEdition.sections.impl;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.mro.grib.model.files.firstEdition.FirstEditionPackage;

import org.mro.grib.model.files.firstEdition.grids.GridsPackage;

import org.mro.grib.model.files.firstEdition.grids.impl.GridsPackageImpl;

import org.mro.grib.model.files.firstEdition.impl.FirstEditionPackageImpl;

import org.mro.grib.model.files.secondEdition.SecondEditionPackage;

import org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage;
import org.mro.grib.model.files.secondEdition.dataRepresentations.impl.DataRepresentationsPackageImpl;
import org.mro.grib.model.files.secondEdition.impl.SecondEditionPackageImpl;

import org.mro.grib.model.files.secondEdition.products.ProductsPackage;
import org.mro.grib.model.files.secondEdition.products.impl.ProductsPackageImpl;
import org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalPackage;
import org.mro.grib.model.files.secondEdition.products.meteorological.impl.MeteorologicalPackageImpl;
import org.mro.grib.model.files.secondEdition.sections.BitMapSection;
import org.mro.grib.model.files.secondEdition.sections.DataRepresentationSection;
import org.mro.grib.model.files.secondEdition.sections.DataSection;
import org.mro.grib.model.files.secondEdition.sections.Discipline;
import org.mro.grib.model.files.secondEdition.sections.GridDefinitionSection;
import org.mro.grib.model.files.secondEdition.sections.IdentificationSection;
import org.mro.grib.model.files.secondEdition.sections.IdentificationTemplateNumber;
import org.mro.grib.model.files.secondEdition.sections.IndicatorSection;
import org.mro.grib.model.files.secondEdition.sections.LocalUseSection;
import org.mro.grib.model.files.secondEdition.sections.MasterTableVersionNumber;
import org.mro.grib.model.files.secondEdition.sections.ProductDefinitionSection;
import org.mro.grib.model.files.secondEdition.sections.ProductionStatusOfData;
import org.mro.grib.model.files.secondEdition.sections.SectionsFactory;
import org.mro.grib.model.files.secondEdition.sections.SectionsPackage;
import org.mro.grib.model.files.secondEdition.sections.SignificanceOfReferenceTime;
import org.mro.grib.model.files.secondEdition.sections.TypeOfCalendar;
import org.mro.grib.model.files.secondEdition.sections.TypeOfData;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class SectionsPackageImpl extends EPackageImpl implements SectionsPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass indicatorSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass identificationSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass localUseSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass gridDefinitionSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass dataRepresentationSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass bitMapSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass dataSectionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum disciplineEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum masterTableVersionNumberEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum significanceOfReferenceTimeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum productionStatusOfDataEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum typeOfDataEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum identificationTemplateNumberEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum typeOfCalendarEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.mro.grib.model.files.secondEdition.sections.SectionsPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private SectionsPackageImpl() {
		super(eNS_URI, SectionsFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link SectionsPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static SectionsPackage init() {
		if (isInited) return (SectionsPackage)EPackage.Registry.INSTANCE.getEPackage(SectionsPackage.eNS_URI);

		// Obtain or create and register package
		SectionsPackageImpl theSectionsPackage = (SectionsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SectionsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SectionsPackageImpl());

		isInited = true;

		// Obtain or create and register interdependencies
		FirstEditionPackageImpl theFirstEditionPackage = (FirstEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) instanceof FirstEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) : FirstEditionPackage.eINSTANCE);
		GridsPackageImpl theGridsPackage = (GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) instanceof GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) : GridsPackage.eINSTANCE);
		org.mro.grib.model.files.firstEdition.sections.impl.SectionsPackageImpl theSectionsPackage_1 = (org.mro.grib.model.files.firstEdition.sections.impl.SectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.firstEdition.sections.SectionsPackage.eNS_URI) instanceof org.mro.grib.model.files.firstEdition.sections.impl.SectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.firstEdition.sections.SectionsPackage.eNS_URI) : org.mro.grib.model.files.firstEdition.sections.SectionsPackage.eINSTANCE);
		SecondEditionPackageImpl theSecondEditionPackage = (SecondEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) instanceof SecondEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) : SecondEditionPackage.eINSTANCE);
		org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl theGridsPackage_1 = (org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) instanceof org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) : org.mro.grib.model.files.secondEdition.grids.GridsPackage.eINSTANCE);
		ProductsPackageImpl theProductsPackage = (ProductsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI) instanceof ProductsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI) : ProductsPackage.eINSTANCE);
		MeteorologicalPackageImpl theMeteorologicalPackage = (MeteorologicalPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI) instanceof MeteorologicalPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI) : MeteorologicalPackage.eINSTANCE);
		DataRepresentationsPackageImpl theDataRepresentationsPackage = (DataRepresentationsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) instanceof DataRepresentationsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) : DataRepresentationsPackage.eINSTANCE);

		// Create package meta-data objects
		theSectionsPackage.createPackageContents();
		theFirstEditionPackage.createPackageContents();
		theGridsPackage.createPackageContents();
		theSectionsPackage_1.createPackageContents();
		theSecondEditionPackage.createPackageContents();
		theGridsPackage_1.createPackageContents();
		theProductsPackage.createPackageContents();
		theMeteorologicalPackage.createPackageContents();
		theDataRepresentationsPackage.createPackageContents();

		// Initialize created meta-data
		theSectionsPackage.initializePackageContents();
		theFirstEditionPackage.initializePackageContents();
		theGridsPackage.initializePackageContents();
		theSectionsPackage_1.initializePackageContents();
		theSecondEditionPackage.initializePackageContents();
		theGridsPackage_1.initializePackageContents();
		theProductsPackage.initializePackageContents();
		theMeteorologicalPackage.initializePackageContents();
		theDataRepresentationsPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theSectionsPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(SectionsPackage.eNS_URI, theSectionsPackage);
		return theSectionsPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIndicatorSection() {
		return indicatorSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIndicatorSection_StartOffset() {
		return (EAttribute)indicatorSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIndicatorSection_EndOffset() {
		return (EAttribute)indicatorSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIndicatorSection_Discipline() {
		return (EAttribute)indicatorSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIndicatorSection_GribEditionNumber() {
		return (EAttribute)indicatorSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIndicatorSection_MessageLength() {
		return (EAttribute)indicatorSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIdentificationSection() {
		return identificationSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_StartOffset() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_EndOffset() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Length() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_IdentificationOfOriginatingCentre() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_IdentificationOfOriginatingSubcentre() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_GribMasterTablesVersion() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_GribLocalTablesVersion() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_SignificanceOfReferenceTime() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Year() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Month() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Day() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Hour() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Minute() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_Second() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_ProductionStatus() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getIdentificationSection_TypeOfData() {
		return (EAttribute)identificationSectionEClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getLocalUseSection() {
		return localUseSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getLocalUseSection_StartOffset() {
		return (EAttribute)localUseSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getLocalUseSection_EndOffset() {
		return (EAttribute)localUseSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getLocalUseSection_Length() {
		return (EAttribute)localUseSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGridDefinitionSection() {
		return gridDefinitionSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_StartOffset() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_EndOffset() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_Length() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_SourceOfGridDefinition() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_NumberOfDataPoints() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_NumberOfOctetsForOptionalListOfNumbers() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_InterpretationOfListOfNumbers() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGridDefinitionSection_GridDefinitionTemplateNumber() {
		return (EAttribute)gridDefinitionSectionEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGridDefinitionSection_GridDefinitionTemplate() {
		return (EReference)gridDefinitionSectionEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionSection() {
		return productDefinitionSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionSection_StartOffset() {
		return (EAttribute)productDefinitionSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionSection_EndOffset() {
		return (EAttribute)productDefinitionSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionSection_Length() {
		return (EAttribute)productDefinitionSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionSection_NumberOfCoordinateValuesAfterTemplate() {
		return (EAttribute)productDefinitionSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionSection_ProductDefinitionTemplateNumber() {
		return (EAttribute)productDefinitionSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getProductDefinitionSection_ProductDefinitionTemplate() {
		return (EReference)productDefinitionSectionEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDataRepresentationSection() {
		return dataRepresentationSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataRepresentationSection_StartOffset() {
		return (EAttribute)dataRepresentationSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataRepresentationSection_EndOffset() {
		return (EAttribute)dataRepresentationSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataRepresentationSection_Length() {
		return (EAttribute)dataRepresentationSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataRepresentationSection_TotalNumberOfDataPoints() {
		return (EAttribute)dataRepresentationSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataRepresentationSection_DataRepresentationTemplateNumber() {
		return (EAttribute)dataRepresentationSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDataRepresentationSection_DataRepresentationTemplate() {
		return (EReference)dataRepresentationSectionEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getBitMapSection() {
		return bitMapSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBitMapSection_StartOffset() {
		return (EAttribute)bitMapSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBitMapSection_EndOffset() {
		return (EAttribute)bitMapSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBitMapSection_Length() {
		return (EAttribute)bitMapSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBitMapSection_BitMapIndicator() {
		return (EAttribute)bitMapSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBitMapSection_BitMapOffset() {
		return (EAttribute)bitMapSectionEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDataSection() {
		return dataSectionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataSection_StartOffset() {
		return (EAttribute)dataSectionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataSection_EndOffset() {
		return (EAttribute)dataSectionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataSection_Length() {
		return (EAttribute)dataSectionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDataSection_DataOffset() {
		return (EAttribute)dataSectionEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getDiscipline() {
		return disciplineEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getMasterTableVersionNumber() {
		return masterTableVersionNumberEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getSignificanceOfReferenceTime() {
		return significanceOfReferenceTimeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getProductionStatusOfData() {
		return productionStatusOfDataEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTypeOfData() {
		return typeOfDataEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getIdentificationTemplateNumber() {
		return identificationTemplateNumberEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTypeOfCalendar() {
		return typeOfCalendarEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SectionsFactory getSectionsFactory() {
		return (SectionsFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		indicatorSectionEClass = createEClass(INDICATOR_SECTION);
		createEAttribute(indicatorSectionEClass, INDICATOR_SECTION__START_OFFSET);
		createEAttribute(indicatorSectionEClass, INDICATOR_SECTION__END_OFFSET);
		createEAttribute(indicatorSectionEClass, INDICATOR_SECTION__DISCIPLINE);
		createEAttribute(indicatorSectionEClass, INDICATOR_SECTION__GRIB_EDITION_NUMBER);
		createEAttribute(indicatorSectionEClass, INDICATOR_SECTION__MESSAGE_LENGTH);

		identificationSectionEClass = createEClass(IDENTIFICATION_SECTION);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__START_OFFSET);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__END_OFFSET);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__LENGTH);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_CENTRE);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__IDENTIFICATION_OF_ORIGINATING_SUBCENTRE);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__GRIB_MASTER_TABLES_VERSION);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__GRIB_LOCAL_TABLES_VERSION);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__SIGNIFICANCE_OF_REFERENCE_TIME);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__YEAR);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__MONTH);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__DAY);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__HOUR);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__MINUTE);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__SECOND);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__PRODUCTION_STATUS);
		createEAttribute(identificationSectionEClass, IDENTIFICATION_SECTION__TYPE_OF_DATA);

		localUseSectionEClass = createEClass(LOCAL_USE_SECTION);
		createEAttribute(localUseSectionEClass, LOCAL_USE_SECTION__START_OFFSET);
		createEAttribute(localUseSectionEClass, LOCAL_USE_SECTION__END_OFFSET);
		createEAttribute(localUseSectionEClass, LOCAL_USE_SECTION__LENGTH);

		gridDefinitionSectionEClass = createEClass(GRID_DEFINITION_SECTION);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__START_OFFSET);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__END_OFFSET);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__LENGTH);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__SOURCE_OF_GRID_DEFINITION);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__NUMBER_OF_DATA_POINTS);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__NUMBER_OF_OCTETS_FOR_OPTIONAL_LIST_OF_NUMBERS);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__INTERPRETATION_OF_LIST_OF_NUMBERS);
		createEAttribute(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__GRID_DEFINITION_TEMPLATE_NUMBER);
		createEReference(gridDefinitionSectionEClass, GRID_DEFINITION_SECTION__GRID_DEFINITION_TEMPLATE);

		productDefinitionSectionEClass = createEClass(PRODUCT_DEFINITION_SECTION);
		createEAttribute(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__START_OFFSET);
		createEAttribute(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__END_OFFSET);
		createEAttribute(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__LENGTH);
		createEAttribute(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__NUMBER_OF_COORDINATE_VALUES_AFTER_TEMPLATE);
		createEAttribute(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__PRODUCT_DEFINITION_TEMPLATE_NUMBER);
		createEReference(productDefinitionSectionEClass, PRODUCT_DEFINITION_SECTION__PRODUCT_DEFINITION_TEMPLATE);

		dataRepresentationSectionEClass = createEClass(DATA_REPRESENTATION_SECTION);
		createEAttribute(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__START_OFFSET);
		createEAttribute(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__END_OFFSET);
		createEAttribute(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__LENGTH);
		createEAttribute(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__TOTAL_NUMBER_OF_DATA_POINTS);
		createEAttribute(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__DATA_REPRESENTATION_TEMPLATE_NUMBER);
		createEReference(dataRepresentationSectionEClass, DATA_REPRESENTATION_SECTION__DATA_REPRESENTATION_TEMPLATE);

		bitMapSectionEClass = createEClass(BIT_MAP_SECTION);
		createEAttribute(bitMapSectionEClass, BIT_MAP_SECTION__START_OFFSET);
		createEAttribute(bitMapSectionEClass, BIT_MAP_SECTION__END_OFFSET);
		createEAttribute(bitMapSectionEClass, BIT_MAP_SECTION__LENGTH);
		createEAttribute(bitMapSectionEClass, BIT_MAP_SECTION__BIT_MAP_INDICATOR);
		createEAttribute(bitMapSectionEClass, BIT_MAP_SECTION__BIT_MAP_OFFSET);

		dataSectionEClass = createEClass(DATA_SECTION);
		createEAttribute(dataSectionEClass, DATA_SECTION__START_OFFSET);
		createEAttribute(dataSectionEClass, DATA_SECTION__END_OFFSET);
		createEAttribute(dataSectionEClass, DATA_SECTION__LENGTH);
		createEAttribute(dataSectionEClass, DATA_SECTION__DATA_OFFSET);

		// Create enums
		disciplineEEnum = createEEnum(DISCIPLINE);
		masterTableVersionNumberEEnum = createEEnum(MASTER_TABLE_VERSION_NUMBER);
		significanceOfReferenceTimeEEnum = createEEnum(SIGNIFICANCE_OF_REFERENCE_TIME);
		productionStatusOfDataEEnum = createEEnum(PRODUCTION_STATUS_OF_DATA);
		typeOfDataEEnum = createEEnum(TYPE_OF_DATA);
		identificationTemplateNumberEEnum = createEEnum(IDENTIFICATION_TEMPLATE_NUMBER);
		typeOfCalendarEEnum = createEEnum(TYPE_OF_CALENDAR);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		org.mro.grib.model.files.secondEdition.grids.GridsPackage theGridsPackage_1 = (org.mro.grib.model.files.secondEdition.grids.GridsPackage)EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI);
		ProductsPackage theProductsPackage = (ProductsPackage)EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI);
		DataRepresentationsPackage theDataRepresentationsPackage = (DataRepresentationsPackage)EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes

		// Initialize classes and features; add operations and parameters
		initEClass(indicatorSectionEClass, IndicatorSection.class, "IndicatorSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getIndicatorSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, IndicatorSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIndicatorSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, IndicatorSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIndicatorSection_Discipline(), ecorePackage.getEByte(), "discipline", null, 1, 1, IndicatorSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIndicatorSection_GribEditionNumber(), ecorePackage.getEByte(), "gribEditionNumber", null, 1, 1, IndicatorSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIndicatorSection_MessageLength(), ecorePackage.getELong(), "messageLength", null, 1, 1, IndicatorSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(identificationSectionEClass, IdentificationSection.class, "IdentificationSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_IdentificationOfOriginatingCentre(), ecorePackage.getEShort(), "identificationOfOriginatingCentre", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_IdentificationOfOriginatingSubcentre(), ecorePackage.getEShort(), "identificationOfOriginatingSubcentre", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_GribMasterTablesVersion(), ecorePackage.getEByte(), "gribMasterTablesVersion", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_GribLocalTablesVersion(), ecorePackage.getEByte(), "gribLocalTablesVersion", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_SignificanceOfReferenceTime(), ecorePackage.getEByte(), "significanceOfReferenceTime", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Year(), ecorePackage.getEShort(), "year", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Month(), ecorePackage.getEByte(), "month", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Day(), ecorePackage.getEByte(), "day", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_Second(), ecorePackage.getEByte(), "second", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_ProductionStatus(), ecorePackage.getEByte(), "productionStatus", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getIdentificationSection_TypeOfData(), ecorePackage.getEByte(), "typeOfData", null, 1, 1, IdentificationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(localUseSectionEClass, LocalUseSection.class, "LocalUseSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getLocalUseSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, LocalUseSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getLocalUseSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, LocalUseSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getLocalUseSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, LocalUseSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(gridDefinitionSectionEClass, GridDefinitionSection.class, "GridDefinitionSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getGridDefinitionSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getGridDefinitionSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getGridDefinitionSection_Length(), ecorePackage.getEInt(), "length", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getGridDefinitionSection_SourceOfGridDefinition(), ecorePackage.getEByte(), "sourceOfGridDefinition", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getGridDefinitionSection_NumberOfDataPoints(), ecorePackage.getEInt(), "numberOfDataPoints", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getGridDefinitionSection_NumberOfOctetsForOptionalListOfNumbers(), ecorePackage.getEByte(), "numberOfOctetsForOptionalListOfNumbers", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getGridDefinitionSection_InterpretationOfListOfNumbers(), ecorePackage.getEByte(), "interpretationOfListOfNumbers", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getGridDefinitionSection_GridDefinitionTemplateNumber(), ecorePackage.getEShort(), "gridDefinitionTemplateNumber", "0", 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEReference(getGridDefinitionSection_GridDefinitionTemplate(), theGridsPackage_1.getIGridDefinition(), null, "gridDefinitionTemplate", null, 1, 1, GridDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionSectionEClass, ProductDefinitionSection.class, "ProductDefinitionSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionSection_NumberOfCoordinateValuesAfterTemplate(), ecorePackage.getEShort(), "numberOfCoordinateValuesAfterTemplate", "0", 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
		initEAttribute(getProductDefinitionSection_ProductDefinitionTemplateNumber(), ecorePackage.getEShort(), "productDefinitionTemplateNumber", null, 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEReference(getProductDefinitionSection_ProductDefinitionTemplate(), theProductsPackage.getIProductDefinition(), null, "productDefinitionTemplate", null, 1, 1, ProductDefinitionSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(dataRepresentationSectionEClass, DataRepresentationSection.class, "DataRepresentationSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getDataRepresentationSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataRepresentationSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataRepresentationSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataRepresentationSection_TotalNumberOfDataPoints(), ecorePackage.getEInt(), "totalNumberOfDataPoints", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataRepresentationSection_DataRepresentationTemplateNumber(), ecorePackage.getEShort(), "dataRepresentationTemplateNumber", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEReference(getDataRepresentationSection_DataRepresentationTemplate(), theDataRepresentationsPackage.getIDataRepresentation(), null, "dataRepresentationTemplate", null, 1, 1, DataRepresentationSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(bitMapSectionEClass, BitMapSection.class, "BitMapSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getBitMapSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, BitMapSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getBitMapSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, BitMapSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getBitMapSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, BitMapSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getBitMapSection_BitMapIndicator(), ecorePackage.getEByte(), "bitMapIndicator", null, 1, 1, BitMapSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getBitMapSection_BitMapOffset(), ecorePackage.getELong(), "bitMapOffset", null, 1, 1, BitMapSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(dataSectionEClass, DataSection.class, "DataSection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getDataSection_StartOffset(), ecorePackage.getELong(), "startOffset", null, 1, 1, DataSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataSection_EndOffset(), ecorePackage.getELong(), "endOffset", null, 1, 1, DataSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataSection_Length(), ecorePackage.getEInt(), "length", null, 1, 1, DataSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getDataSection_DataOffset(), ecorePackage.getELong(), "dataOffset", null, 1, 1, DataSection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		// Initialize enums and add enum literals
		initEEnum(disciplineEEnum, Discipline.class, "Discipline"); //$NON-NLS-1$
		addEEnumLiteral(disciplineEEnum, Discipline.METEOROLOGICAL_PRODUCTS);
		addEEnumLiteral(disciplineEEnum, Discipline.HYDROLOGICAL_PRODUCTS);
		addEEnumLiteral(disciplineEEnum, Discipline.LAND_SURFACE_PRODUCTS);
		addEEnumLiteral(disciplineEEnum, Discipline.SPACE_PRODUCTS);
		addEEnumLiteral(disciplineEEnum, Discipline.OCEANOGRAPHIC_PRODUCTS);
		addEEnumLiteral(disciplineEEnum, Discipline.MISSING);

		initEEnum(masterTableVersionNumberEEnum, MasterTableVersionNumber.class, "MasterTableVersionNumber"); //$NON-NLS-1$
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.EXPERIMENTAL);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_07_11_2001);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_04_11_2003);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_02_11_2005);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_07_11_2007);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_04_11_2009);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_15_09_2010);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_04_05_2011);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_02_11_2011);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_02_05_2012);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_07_11_2012);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_08_05_2013);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.VERSION_OF_14_11_2013);
		addEEnumLiteral(masterTableVersionNumberEEnum, MasterTableVersionNumber.PRE_OPERATIONAL);

		initEEnum(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.class, "SignificanceOfReferenceTime"); //$NON-NLS-1$
		addEEnumLiteral(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.ANALYSIS);
		addEEnumLiteral(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.START_OF_FORECAST);
		addEEnumLiteral(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.VERIFYING_TIME_OF_FORECAST);
		addEEnumLiteral(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.OBSERVATION_TIME);
		addEEnumLiteral(significanceOfReferenceTimeEEnum, SignificanceOfReferenceTime.MISSING);

		initEEnum(productionStatusOfDataEEnum, ProductionStatusOfData.class, "ProductionStatusOfData"); //$NON-NLS-1$
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.OPERATIONAL_PRODUCTS);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.OPERATIONAL_TEST_PRODUCTS);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.RESEARCH_PRODUCTS);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.RE_ANALYSIS_PRODUCTS);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.TIGGE);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.TIGGE_TEST);
		addEEnumLiteral(productionStatusOfDataEEnum, ProductionStatusOfData.MISSING);

		initEEnum(typeOfDataEEnum, TypeOfData.class, "TypeOfData"); //$NON-NLS-1$
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.ANALYSIS_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.FORECAST_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.ANALYSIS_AND_FORECAST_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.CONTROL_FORECAST_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.PERTURBED_FORECAST_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.CONTROL_AND_PERTURBED_FORECAST_PRODUCTS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.PROCESSED_SATELLITE_OBSERVATIONS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.PROCESSED_RADAR_OBSERVATIONS);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.EVENT_PROBABILITY);
		addEEnumLiteral(typeOfDataEEnum, TypeOfData.MISSING);

		initEEnum(identificationTemplateNumberEEnum, IdentificationTemplateNumber.class, "IdentificationTemplateNumber"); //$NON-NLS-1$
		addEEnumLiteral(identificationTemplateNumberEEnum, IdentificationTemplateNumber.CALENDAR_DEFINITION);
		addEEnumLiteral(identificationTemplateNumberEEnum, IdentificationTemplateNumber.PALEONTOLOGICAL_OFFSET);
		addEEnumLiteral(identificationTemplateNumberEEnum, IdentificationTemplateNumber.CALENDAR_DEFINITION_AND_PALEONTOLOGICAL_OFFSET);
		addEEnumLiteral(identificationTemplateNumberEEnum, IdentificationTemplateNumber.MISSING);

		initEEnum(typeOfCalendarEEnum, TypeOfCalendar.class, "TypeOfCalendar"); //$NON-NLS-1$
		addEEnumLiteral(typeOfCalendarEEnum, TypeOfCalendar.GREGORIAN);
		addEEnumLiteral(typeOfCalendarEEnum, TypeOfCalendar.THREE_HUNDRED_SIXTY_DAY);
		addEEnumLiteral(typeOfCalendarEEnum, TypeOfCalendar.THREE_HUNDRED_SIXTY_FIVE_DAY);
		addEEnumLiteral(typeOfCalendarEEnum, TypeOfCalendar.PROLEPTIC_GREGORIAN);
		addEEnumLiteral(typeOfCalendarEEnum, TypeOfCalendar.MISSING);

		// Create annotations
		// http://www.eclipse.org/emf/2002/GenModel
		createGenModelAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/GenModel</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createGenModelAnnotations() {
		String source = "http://www.eclipse.org/emf/2002/GenModel"; //$NON-NLS-1$		
		addAnnotation
		  (indicatorSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 0 \u2013 Indicator section", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.2.1_en", "Section 0 shall always be 16 octets long.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.2.2_en", "The first four octets shall always be character coded according to the International Alphabet\r\nNo. 5 as \u201cGRIB\u201d.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.2.3_en", "The remainder of the section shall contain reserved octets, followed by the Discipline, the\r\nGRIB edition number, and the length of the entire GRIB message (including the Indicator\r\nsection)." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIndicatorSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIndicatorSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIndicatorSection_Discipline(), 
		   source, 
		   new String[] {
			 "label_en", "Discipline", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "GRIB Master table number (see Code table 0.0)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIndicatorSection_GribEditionNumber(), 
		   source, 
		   new String[] {
			 "label_en", "GRIB edition", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "GRIB edition number (currently 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIndicatorSection_MessageLength(), 
		   source, 
		   new String[] {
			 "label_en", "Total length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total length of GRIB message in octets (including Section 0)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 1 \u2013 Identification section", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Local tables shall define those parts of the Master table which are reserved for local use except for the case described\r\nbelow. In any case, the use of Local tables in messages intended for non-local or international exchange is strongly\r\ndiscouraged.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "If octet 10 contains 255 then only Local tables are in use, the Local table version number (octet 11) must not be zero nor\r\nmissing, and Local tables may include entries from the entire range of the tables.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "If octet 11 is zero, octet 10 must contain a valid Master table version number and only those parts of the tables not\r\nreserved for local use may be used.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.3.1_en", "The length of the section, in units of octets, shall be expressed over the group of the first\r\nfour octets, i.e. over the first 32 bits.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.3.2_en", "The section number shall be expressed in the fifth octet.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.3.3_en", "Octets beyond 21 are reserved for future use and need not be present." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of section in octets (21 or nn)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_IdentificationOfOriginatingCentre(), 
		   source, 
		   new String[] {
			 "label_en", "Originating/generating centre", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Identification of originating/generating centre (see Common Code table C\u201311)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_IdentificationOfOriginatingSubcentre(), 
		   source, 
		   new String[] {
			 "label_en", "Originating/generating subcentre", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Identification of originating/generating subcentre (allocated by originating/ generating\r\ncentre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_GribMasterTablesVersion(), 
		   source, 
		   new String[] {
			 "label_en", "GRIB Master tables version", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "GRIB Master tables version number (see Code table 1.0 and Note 1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_GribLocalTablesVersion(), 
		   source, 
		   new String[] {
			 "label_en", "GRIB Local tables version", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Version number of GRIB Local tables used to augment Master tables (see Code table 1.1\r\nand Note 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_SignificanceOfReferenceTime(), 
		   source, 
		   new String[] {
			 "label_en", "Significance of reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Significance of reference time (see Code table 1.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year (4 digits) of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Second", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Second of reference time of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_ProductionStatus(), 
		   source, 
		   new String[] {
			 "label_en", "Production status of processed data", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Production status of processed data in this GRIB message (see Code table 1.3)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getIdentificationSection_TypeOfData(), 
		   source, 
		   new String[] {
			 "label_en", "Type of processed data", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of processed data in this GRIB message (see Code table 1.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (localUseSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 2 \u2013 Local use section", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.4.1_en", "Regulations 92.3.1 and 92.3.2 shall apply.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.4.2_en", "Section 2 is optional." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getLocalUseSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getLocalUseSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getLocalUseSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (gridDefinitionSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 3 \u2013 Grid definition section", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.5.1_en", "Regulations 92.3.1 and 92.3.2 shall apply.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "If octet 6 is not zero, octets 15\u2013xx (15\u2013nn if octet 11 is zero) may not be supplied. This should be documented with all\r\nbits set to 1 (missing value) in the grid definition template number.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "An optional list of numbers may be used to document a quasi-regular grid. In such a case, octet 11 is non zero and gives\r\nthe number of octets used per item on the list. For all other cases, such as regular grids, octets 11 and 12 are zero and\r\nno list is appended to the grid definition template.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "If a list of numbers defining number of points is present, it is appended at the end of the grid definition template (or directly\r\nafter the grid definition template number if the template is missing), the length of the list is given by the grid definition.\r\nWhen the grid definition template is present, the length is given according to bit 3 of scanning mode flag octet (length is\r\nNj or Ny for flag value 0). List ordering is implied by data scanning.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "Depending on code value given in octet 12, the list of numbers either:\r\n\u2013 corresponds to the coordinate lines as given in the grid definition, or\r\n\u2013 corresponds to a full circle, or\r\n\u2013 does not apply." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_SourceOfGridDefinition(), 
		   source, 
		   new String[] {
			 "label_en", "Source of grid definition", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Source of grid definition (see Code table 3.0 and Note 1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_NumberOfDataPoints(), 
		   source, 
		   new String[] {
			 "label_en", "Number of data points", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of data points" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_NumberOfOctetsForOptionalListOfNumbers(), 
		   source, 
		   new String[] {
			 "label_en", "Number of octets for optional list of numbers", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of octets for optional list of numbers (see Note 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_InterpretationOfListOfNumbers(), 
		   source, 
		   new String[] {
			 "label_en", "Interpretation of list of numbers", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Interpretation of list of numbers (see Code table 3.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_GridDefinitionTemplateNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Grid definition template number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Grid definition template number (= N) (see Code table 3.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getGridDefinitionSection_GridDefinitionTemplate(), 
		   source, 
		   new String[] {
			 "label_en", "Grid Definition", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the section" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 4 \u2013 Product definition section", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Coordinate values are intended to document the vertical discretization associated with model data on hybrid coordinate\r\nvertical levels. A number of zero in octets 6\u20137 indicates that no such values are present. Otherwise the number\r\ncorresponds to the whole set of values.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hybrid systems, in this context, employ a means of representing vertical coordinates in terms of a mathematical\r\ncombination of pressure and sigma coordinates. When used in conjunction with a surface pressure field and an\r\nappropriate mathematical expression, the vertical coordinate parameters may be used to interpret the hybrid vertical\r\ncoordinate.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "Hybrid coordinate values, if present, should be encoded in IEEE 32-bit floating point format. They are intended to be\r\nencoded as pairs.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "Two distinct hybrid coordinate formulations can be expressed in GRIB Edition 2. One is based on pressure, the other\r\non the logarithm of pressure. If the hybrid coordinate being used is based on pressure, then level type 105 (Code\r\ntable 4.5) shall be used to specify the vertical level type. If the formulation is based on the natural logarithm of\r\npressure, then level type 112 (Code table 4.5) shall be used. In both cases Notes 1 to 3 (above) apply fully.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.6.1_en", "Regulations 92.3.1 and 92.3.2 shall apply.", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.6.2_en", "To maintain orthogonal structure of GRIB Edition 2, parameter names in Code table 4.2\r\nshould not contain surface type and statistical process as part of the name." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionSection_NumberOfCoordinateValuesAfterTemplate(), 
		   source, 
		   new String[] {
			 "label_en", "Number of coordinate values", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of coordinate values after template (see Note 1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionSection_ProductDefinitionTemplateNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Product definition template number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Product definition template number (see Code table 4.0)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (dataRepresentationSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 5 \u2013 Data representation section", //$NON-NLS-1$ //$NON-NLS-2$
			 "regulation_92.7.1_en", "Regulations 92.3.1 and 92.3.2 shall apply." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataRepresentationSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataRepresentationSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataRepresentationSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataRepresentationSection_TotalNumberOfDataPoints(), 
		   source, 
		   new String[] {
			 "label_en", "Number of data points", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of data points where one or more values are specified in Section 7 when a bit map\r\nis present, total number of data points when a bit map is absent." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataRepresentationSection_DataRepresentationTemplateNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Data representation template number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Data representation template number (see Code table 5.0)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (bitMapSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "Section 6 \u2013 Bit-map section", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "If octet 6 is not zero, the length of the section is 6 and octets 7\u2013nn are not present." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getBitMapSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getBitMapSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getBitMapSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section Length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getBitMapSection_BitMapIndicator(), 
		   source, 
		   new String[] {
			 "label_en", "Bit-map indicator", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Bit-map indicator (see Code table 6.0 and the Note)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getBitMapSection_BitMapOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Bit-map offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Start offset of the bit-map" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (dataSectionEClass, 
		   source, 
		   new String[] {
			 "description_en", "latitude/longitude (or equidistant cylindrical, or Plate Carr\u00e9e)", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Basic angle of the initial production domain and subdivisions of this basic angle are provided to manage cases where\r\nthe recommended unit of 10\u20136 degrees is not applicable to describe the extreme longitudes and latitudes, and direction\r\nincrements. For these last six descriptors, the unit is equal to the ratio of the basic angle and the subdivisions number.\r\nFor ordinary cases, zero and missing values should be coded, equivalent to respective values of 1 and 106 (10\u20136 degrees\r\nunit).", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "For data on a quasi-regular grid, where all the rows or columns do not necessarily have the same number of grid points,\r\neither Ni (octets 31\u201334) or Nj (octets 35\u201338) and the corresponding Di (octets 64\u201367) or Dj (octets 68\u201371) shall be\r\ncoded with all bits set to 1 (missing). The actual number of points along each parallel or meridian shall be coded in\r\nthe octets immediately following the grid definition template (octets [xx+1]\u2013nn), as described in the description of the\r\ngrid definition section.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "A quasi-regular grid is only defined for appropriate grid scanning modes. Either rows or columns, but not both\r\nsimultaneously, may have variable numbers of points or variable spacing. The first point in each row (column) shall be\r\npositioned at the meridian (parallel) indicated by octets 47\u201354. The grid points shall be evenly spaced in latitude\r\n(longitude).", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "A scaled value of radius of spherical Earth, or major or minor axis of oblate spheroid Earth is derived from applying the\r\nappropriate scale factor to the value expressed in metres.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_5_en", "It is recommended to use unsigned direction increments." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataSection_StartOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Start offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section start offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataSection_EndOffset(), 
		   source, 
		   new String[] {
			 "label_en", "End offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section end offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataSection_Length(), 
		   source, 
		   new String[] {
			 "label_en", "Length", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Section Length" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getDataSection_DataOffset(), 
		   source, 
		   new String[] {
			 "label_en", "Bit-map offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Start offset of the data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 0.0 \u2013 Discipline of processed data in the GRIB message" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Meteorological products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Hydrological products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Land surface products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Space products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Oceanographic products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (disciplineEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.0 \u2013 GRIB master tables version number" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 7 November 2001" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 4 November 2003" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 2 November 2005" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 7 November 2007" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 4 November 2009" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 15 September 2010" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 4 May 2011" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 2 November 2011" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 2 May 2012" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 7 November 2012" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 5 May 2013" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Version implemented on 14 November 2013" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (masterTableVersionNumberEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Pre-operational to be implemented by next amendment" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.2 \u2013 Significance of reference time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Analysis" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Start of forecast" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Verifying time of forecast" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Observation time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (significanceOfReferenceTimeEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.3 \u2013 Production status of data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Operational products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Operational test products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Research products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Re-analysis products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "THORPEX Interactive Grand Global Ensemble (TIGGE)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "THORPEX Interactive Grand Global Ensemble (TIGGE) test" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productionStatusOfDataEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.4 \u2013 Type of data", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "An initialized analysis is considered a zero-hour forecast." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Analysis products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Forecast products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Analysis and forecast products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Control forecast products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Perturbed forecast products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Control and perturbed forecast products" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Processed satellite observations" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Processed radar observations" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Event probability" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfDataEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationTemplateNumberEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.5 \u2013 Identification template number" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationTemplateNumberEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Calendar definition" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationTemplateNumberEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Paleontological offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationTemplateNumberEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Calendar definition and paleontological offset" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (identificationTemplateNumberEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum, 
		   source, 
		   new String[] {
			 "description_en", "Code table 1.6 \u2013 Type of calendar" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Gregorian" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "360-day" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "365-day", //$NON-NLS-1$ //$NON-NLS-2$
			 "comment_en", "Essentially a non-leap year" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Proleptic Gregorian", //$NON-NLS-1$ //$NON-NLS-2$
			 "comment_en", "Extends the Gregorian calendar indefinitely in the past" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (typeOfCalendarEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });
	}

} //SectionsPackageImpl
